﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using RFMS;

namespace BU
{
    public class Order
    {
        public string KlantNaam { get; set; }
        public bool Afgehandeld { get; set; }
        public DateTime OrderDatum { get; set; }

        private ModelRFMSContainer _container;
        public Order()
        {
            _container = ModelRFMSContainer.GetInstance();
        }

        public List<DateTime> LijstVanDatums()
        {
            var order = from t in _container.OrderSet
                        where t.Afgehandeld == true
                        select t;
            var lijst = new List<DateTime>();

            foreach (var o in order)
            {
                lijst.Add(o.Datum);
            }

            return lijst;
        }

        public int OnafgehandeldeOrder(string tafelNaam)
        {
            var order = from t in _container.OrderSet
                        where t.Afgehandeld == false && t.Tafels.Naam == tafelNaam
                        select t;
            int ord = new int();
            bool gevonden = false;
            foreach (var o in order)
            {
                if (!gevonden) { ord = o.OrderId; gevonden = true; }
            }

            return ord;
        }

        public void AfhandelenOrder(string tafelNaam)
        {
            var order = _container.OrderSet.Single(p => p.Tafels.Naam == tafelNaam && p.Afgehandeld == false);
            order.Afgehandeld = true;
            _container.SaveChanges();
        }

        public void NieuweOrder(string klantnaam, string tafelNaam)
        {
            RFMS.Order order = new RFMS.Order();
            order.OrderId = 0;
            order.Actief = true;
            order.Afgehandeld = false;
            order.Datum = DateTime.Now;
            order.KlantNaam = klantnaam;
            order.Tafels = TafdelId(tafelNaam);
            _container.OrderSet.AddObject(order);
            _container.SaveChanges();
        }

        private RFMS.Tafel TafdelId(string tafelnaam)
        {
            RFMS.Tafel tafel = new RFMS.Tafel();

            var tt = from t in _container.TafelSet
                       where t.Naam == tafelnaam && t.Actief == true
                       select t;
            foreach (var taf in tt)
            {
                tafel = taf;
            }
            return tafel ;
        }
    }
}
